package com.charges.vo;

import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

/**
 * 返回结果数据传输对象
 *
 * @author admin
 */
@Data
@AllArgsConstructor
@NoArgsConstructor
public class RestResult<T> {

    @ApiModelProperty("成功标识true or false")
    private Boolean success;

    @ApiModelProperty("错误码")
    private Integer errCode;

    @ApiModelProperty("错误消息")
    private String msg;

    @ApiModelProperty("返回对象")
    private T data;

    /**
     * 返回成功结果 带参数
     *
     * @param data
     * @return 成功结果
     */
    public static <T> RestResult<T> success(T data) {
        return new RestResult(Boolean.TRUE, null,null, data);
    }

    /**
     * 返回成功结果
     *
     * @param
     * @return 成功结果
     */
    public static <T> RestResult<T> success() {
        return new RestResult(Boolean.TRUE, null,null, null);
    }

    /**
     * 返回失败结果
     *
     * @param errCode 返回码
     * @param msg     返回消息
     * @return 失败结果
     */
    public static <T> RestResult<T> fail(Integer errCode, String msg) {
        return new RestResult<T>(Boolean.FALSE,errCode, msg, null);
    }
}